// packageG/gift_card/operate-card/operate-card.js
const app = getApp()
const statusEnum = {
  1: '未激活',
  2: '已激活',
  3: '已绑定',
  4: '已使用',
  5: '已过期',
  6: '已作废'
}

Page({

  /**
   * 页面的初始数据
   */
  data: {
    host: app.data.host,
    code_num: '',
    code_sn: ''
  },

  /**
   * 实现表单数据双向绑定
   * @param {Object} e 
   */
  inputChange: function(e) {
    const { detail: value } = e
    const { key } = e.currentTarget.dataset
    this.setData({[key]: value})
  },

  /**
   * 验证卡片
   */
  verificationCard: function() {
    const { code_num, code_sn } = this.data;
    if (!code_num) {
      app.tips('请输入卡号！');
      return;
    }
    if (!code_sn) {
      app.tips('请输入密码！');
      return;
    }
    wx.showLoading({
      title: '正在验证！',
    })
    const that = this;
    app._postNetWork({
      url: app.getNetAddresss('plugin.gift-card.api.record.infoByCodeNum'),
      data: { code_num },
      success: function(res) {
        wx.hideLoading()
        const { result, data: cardData } = res.data
        if (result == 1) {
          const { goods_id, status: cardStatus, member_id, code } = cardData;
          // 根据数据的goods_id判断是否存在卡片
          if (!goods_id) {
            app.tips('卡片不存在！');
            return;
          }
          const { usage: cardUsage } = code;
          let showCancel = false;
          // 通用提示内容
          let content = `卡片${statusEnum[cardStatus]}`,
              confirmText = '确定'
          // 卡片未激活状态提示内容
          if (cardStatus == 1) {
            content += '，是否继续激活？';
            confirmText = '去激活';
            showCancel = true;
          }
          // 全场通用卡片
          if(cardUsage == 1) {
            // 卡片已激活提示是否去绑定
            if (cardStatus == 2) {
              content += `，是否绑定？绑定到您的账户后将无法做解绑操作，面值${cardData.face_value}元。`;
              confirmText = '确认绑定';
              showCancel = true;
            }
            // 卡片已绑定提示是否去兑换
            if (cardStatus == 3) {
              content += `，是否继续兑换？面值${cardData.face_value}元。`;
              confirmText = '确认兑换';
              showCancel = true;
            }
          } 
          // 指定商品卡片
          else if(cardUsage == 2) {
            // 卡片已激活/已绑定提示是否去兑换
            if (cardStatus == 2 || cardStatus == 3) {
              content += `，是否去兑换。`;
              confirmText = '去兑换';
              showCancel = true;
            }
          }
          // 当前登录用户id
          const uid = wx.getStorageSync("yz_uid");
          // 卡片已绑定&绑定用户不是当前账户
          if (cardStatus == 3 && uid != member_id) {
            content = `卡片已被其他用户绑定。`;
            confirmText = '确定'
            showCancel = false;
          }
          wx.showModal({
            title: '提示',
            content,
            confirmText,
            showCancel,
            complete: (res) => {
              if (res.confirm) {
                // 卡片已绑定&绑定用户不是当前账户
                if (cardStatus == 3 && uid != member_id) return;
                // 去激活卡片
                if (cardStatus == 1) {
                  that.activeCard(cardData)
                  return;
                }
                // 全场通用卡片
                if (cardUsage == 1) {
                  // 绑定卡片
                  cardStatus == 2 && that.bindCard(cardData)
                  // 兑换成积分
                  cardStatus == 3 && that.redeemIntegral(cardData)
                }
                if (cardUsage == 2) {
                  // 查验卡片，成功后跳转到兑换页面
                  cardStatus == 2 && that.checkCodeSn(cardData);
                  // 绑定的卡片跳转到兑换页
                  cardStatus == 3 && that.goIndex(cardData)
                }
              }
            }
          })
        }
      },
      fail: function() {
        wx.hideLoading()
      }
    })
  },

  /**
   * 跳转到卡片激活页面
   * @param {Object} cardData 卡片信息
   */
  activeCard: function(cardData) {
    wx.navigateTo({
      url: '/packageG/gift_card/goods/goods?goods_id=' + cardData.goods_id +"&option_type=1"+ "&record_id="+cardData.id + '&gift_card_record_id=' + cardData.id
    });
  },

  /**
   * 绑定卡片
   * @param {Object} cardData 卡片信息
   */
  bindCard: function(cardData) {
    const { code_sn, code_num } = this.data;
    wx.showLoading({
      title: '正在确认绑定...',
    })
    const that = this;
    app._getNetWork({
      url: app.getNetAddresss('plugin.gift-card.api.record.bind'),
      data: { code_sn, code_num },
      success: function(res) {
        wx.hideLoading()
        const { result, msg } = res.data;
        if (result == 1) {
          // 绑定成功自动去兑换成积分
          that.redeemIntegral(cardData)
        } else {
          app.tips(msg || '绑定失败！')
        }
      },
      fail: function() {
        wx.hideLoading()
      }
    })
  },

  /**
   * 兑换积分-全场通用卡
   * @param {Object} cardData 卡片信息
   */
  redeemIntegral: function(cardData) {
    wx.showLoading({
      title: '兑换中...',
    })
    const { id } = cardData;
    const that = this;
    app._postNetWork({
      url: app.getNetAddresss('plugin.gift-card.api.record.integralExchange'),
      data: { id },
      success: function(res) {
        wx.hideLoading()
        const resData = res.data
        const { result, msg } = resData
        if (result == 1) {
          that.setData({
            code_num: '',
            code_sn: ''
          })
          wx.showModal({
            title: '成功',
            content: msg,
            confirmText: '去使用',
            complete: (resC) => {
              if (resC.confirm) {
                // 去使用
                const { code: { store_id } } = cardData;
                const url = store_id ? `/packageC/o2o/o2oStore/o2oStore?store_id=${store_id}` : '/packageG/pages/category_v2/category_v2'
                wx.navigateTo({ url })
              }
            }
          })
        } else {
          app.tips(msg || '兑换失败！')
        }
      },
      fail: function() {
        wx.hideLoading()
      }
    })
  },

  /**
   * 查验卡片卡片
   * @param {Object} cardData 卡片信息
   */
  checkCodeSn: function(cardData) {
    wx.showLoading({
      title: '正在查验卡片...',
    })
    const { code_sn } = this.data
    const { id: code_id } = cardData;
    console.log(code_id, code_sn);
    const that = this;
    app._getNetWork({
      url: app.getNetAddresss('plugin.gift-card.api.record.checkCodeSn'),
      data: {
        code_id,
        code_sn
      },
      success: res => {
        wx.hideLoading()
        const resData = res.data
        const { result, msg } = resData
        if (result == 1) {
          // 查验成功跳转到商品兑换
          that.goIndex(cardData, true)
        } else {
          app.tips(msg);
        }
      },
      fail: function() {
        wx.hideLoading()
      }
    })
  },

  /**
   * 指定商品卡跳转到兑换页面
   * @param {Object} cardData 卡片信息
   * @param {Boolean} isChecked 是否查验：已激活卡查验后跳转
   */
  goIndex: function(cardData, isChecked = false) {
    const {
      code_id,
      code_sn,
      face_value,
      id: record_id
    } = cardData;
    let url = `/packageG/gift_card/index/index?code_id=${code_id}&code_sn=${code_sn}&face_value=${face_value}&record_id=${record_id}`;
    isChecked && (url += '&isChecked=true');
    wx.navigateTo({ url });
  },

  /**
   * 去购物
   */
  goShop: function() {
    wx.navigateTo({
      url: '/packageG/pages/category_v2/category_v2',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.setData({
      code_num: '',
      code_sn: ''
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})